草庐IT

Android ViewModel 附加参数

全部标签

c# - 如果任何参数为空,为什么 Enumerable.SequenceEqual 会抛出异常?

我正在尝试使用Enumerable.SequenceEqual(x,y)因为我希望它基于Object.Equals(x,y)方法,如果x或y为null,则返回false,如果两者均为null(对于null情况),则返回true。但是,如果任何参数为null引用,Enumerable.SequenceEqual(x,y)将抛出异常,如果给它两个null,则不会返回true。在我的代码中,我经常检查集合相等性,所以我创建了一个方法来模拟序列的Object.Equals行为,但我只是想知道这种默认行为背后的逻辑是什么,并且可能有一个现有方法没有空值异常? 最佳答案

c# - C#/.Net 泛型如何知道它们的参数类型?

在C#中,泛型函数或类知道其泛型参数的类型。这意味着动态类型信息,如is或as可用(与Java不可用的情况相反)。我很好奇,编译器如何将这种类型信息提供给泛型方法?对于我可以想象的类,实例可以简单地有一个指向类型的指针,但对于泛型函数我不确定,也许只是一个隐藏的参数?如果泛型被保留到IL级别,我相信它们是,那么我想知道这是如何在该级别完成的。 最佳答案 由于您已经编辑了您的问题以将其从C#编译器扩展到JIT编译器,这里是该过程的概述,采用List作为我们的例子。正如我们所确定的,List只有一种IL表示。类(class)。此表示具有

c# - 如何在 Roslyn ( Microsoft.CodeAnalysis ) 中向生成的方法添加参数? - 需要准确的语法

下面是我用来生成简单方法的函数-//NOTE:SF=SyntaxFactoryListparameterList=newList{SF.Parameter(SF.Identifier(sourceObjectName))};//Createmethodvarmethod=SF.MethodDeclaration(SF.ParseName(destinationClass),functionName).WithBody(SF.Block(nodes)).AddModifiers(SF.Token(SyntaxKind.PublicKeyword)).AddParameterListPar

c# - 为什么泛型类型参数和其他成员之间存在名称冲突

有时像这样的东西很有用:classX{...}classY{XX{get{...}set{...}}}因为X描述了类型是什么(作为类名),以及被访问/改变的值(作为属性名)。到目前为止,一切都很好。假设你想做同样的事情,但以一种通用的方式:classZ{TT{get{...}set{...}}}对于这个例子,编译器提示:Thetype'Z'alreadycontainsadefinitionfor'T'.这发生在属性、变量和方法上,我不太明白为什么-编译器肯定知道T是一个类型,因此可以像第一个例子一样计算出来?简短版本:为什么第一个示例有效,但第二个示例无效?编辑:我刚刚发现,如果我“

c# - 具有非依赖参数的构造函数注入(inject)

我有一个像这样的接口(interface)ITradingApi:publicinterfaceITradingApi{IOrderCreateOrder(...);IEnumerableGetAllSymbols();//...}这意味着成为交易软件供应商的不同API的外观。我的View模型在其构造函数中依赖于此交易API:publicclassMainViewModel{publicMainViewModel(ITradingApitradingApi){/*...*/}//...}我使用Ninject作为IoC容器,所以我将像这样创建我的View模型的实例:varvm=kerne

c# - 无法从高阶函数的用法中推断出类型参数

我有以下高阶函数:publicstaticFuncNot(FuncotherFunc){returnarg=>!otherFunc(arg);}并尝试这样调用它:varisValidStr=LinqUtils.Not(string.IsNullOrWhiteSpace);编译器给我“无法从用法中推断出类型参数”错误。但以下工作:varisValidStr=LinqUtils.Not((strings)=>string.IsNullOrWhiteSpace(s));我想知道有什么区别?string.IsNullOrWhiteSpace已经是具有完全相同签名的非重载函数。如评论中所述,以下

c# - moq:使用 Setup() 时,如何确定方法参数的相等性?

我正在使用Setup()方法来设置模拟接口(interface)实例的行为。我正在设置的方法(我们称它为DoSomething())接受一个类的实例(我们称该类为Foo)。Foofoo=//ExistingfooinstanceMockmock=newMock();mock.Setup(x=>x.DoSomething(foo)).Returns(1);我遇到的问题是,当我使用模拟时,它永远不会匹配设置,所以永远不会返回1。有人可以帮忙吗?Moq如何判断提供给setup方法的参数是否相等? 最佳答案 我的问题的答案是Moq使用.Eq

c# - 从 Visual Studio 构建时如何查看 CSC.EXE(或 VBC.EXE)参数

在使用VisualStudio构建应用程序时,有没有办法查看CSC(或VBC)参数?VisualStudio在幕后调用CSC.exe/VBC.exe。我想知道是否有办法看到那个电话。我需要此信息来使用命令行复制等效的构建脚本。我为build设置了不同的详细级别,但我仍然没有在输出窗口中看到任何CSC.EXE调用。我真的很惊讶为什么微软没有提供一个简单的方法来查看底层的CSC命令。AJ如果我按照您的步骤进行操作,我会得到:我没有看到任何对CSC的引用好的,我是这样解决的:首先,我转到工具和选项并将详细程度设置为详细信息。(在这一点之后构建输出仍然是空的)。然后我得到了VS2010的服务包

c# - 可以将异步事件处理程序附加到 System.Timers.Timer 吗?

我已经阅读了SO帖子here和文章here.我有一个每隔一段时间就会触发一次的计时器事件,我想在处理程序内部进行一些异步处理,所以类似于:Timertimer=newTimer();timer.Interval=1000;timer.Elapsed+=timer_Elapsed;//Pleaseignorethisline.ButsomeanswersalreadygivenbasedonthislinesoIwillleaveitasitis.timer.Elapsed+=async(sender,arguments)=>awaittimer_Elapsed(sender,argum

c# - 如何测试 C# ref 参数是否引用相同的项目

在C#中给定一个具有以下签名的函数publicstaticvoidFoo(refintx,refinty)如果函数是用调用的intA=10;Foo(refA,refA)在函数Foo中是否可以测试x和y参数引用同一个变量?对x和y进行简单的等效测试是不够的,因为在两个不同变量具有相同值的情况下也是如此。 最佳答案 如果你愿意使用不安全的代码,你可以比较底层变量地址:publicstaticboolFoo(refinta,refintb){unsafe{fixed(int*pa=&a,pb=&b){//returntrueiffaand